package ec.edu.ups.cidi.siia.plamdep.moduloweb.servicio;


import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import javax.inject.Inject;
import javax.jws.WebMethod;
import javax.jws.WebService;

import ec.edu.ups.cidi.siia.plamdep.moduloweb.dao.AnalisisDAO;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.jms.ColaAnalisisClient;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.jms.SolicitudAnalisisJMS;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.modeloBD.Analisis;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.modeloWS.Respuesta;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.modeloWS.SolicitudAnalisis;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.utils.Fechas;

@WebService
public class AnalisisWS 
{
	
	@Inject ColaAnalisisClient jms;
	@Inject AnalisisDAO anlDao;
		@WebMethod
		public Respuesta analizar(SolicitudAnalisis m)
		{	
			Respuesta respuesta=new Respuesta();
			try
			{
				String id= UUID.randomUUID().toString();
				
				
				System.out.println("Solicitud recibida....");
				
				SolicitudAnalisisJMS sol=new SolicitudAnalisisJMS();
				sol.setBusquedaLocal(m.isBusquedaLocal());
				sol.setBusquedaWeb(m.isBusquedaWeb());
				sol.setCodigoAlgoritmoComparacion(m.getCodigoAlgoritmoComparacion());
				sol.setCodigoAlgoritmoExtraccion(m.getCodigoAlgoritmoExtraccion());
				sol.setFuentesLocales(m.getFuentesLocales());
				sol.setMailUsuario(m.getMailUsuario());
				sol.setNumeroImg(m.getNumeroImg());
				sol.setRutaArchivoSospechoso(m.getRutaArchivoSospechoso());
				sol.setCodSolicitud(id);
				sol.setFecha(new Fechas().fechaActual);
				sol.setHora(new Fechas().horaActual);
				
				jms.enviarMensaje(sol);
				respuesta.setCodigoPeticion(id);
				respuesta.setEstado(1);
				respuesta.setObservacion("Analisis puesto en cola");
			}catch(Exception e)
			{
				respuesta.setEstado(0);
				respuesta.setObservacion("Analisis fallido");
			}
			return respuesta; 		
		}
		@WebMethod
		public Respuesta progresoAnalisis(String codigoPeticion)
		{	
			Respuesta respuesta=new Respuesta();
			try
			{
				System.out.println("Buscar:"+codigoPeticion);
				Analisis anl=anlDao.buscarPorPeticion(codigoPeticion);
				if(anl!=null)
				{
					System.out.println("Anlaisis Encontrado");
					respuesta.setCodigoPeticion(codigoPeticion);
					respuesta.setEstado(1);
					respuesta.setObservacion(anl.getEstado());
					respuesta.setRutaReporte(anl.getReporte());
				}
				else
				{
					System.out.println("Anlaisis NO Encontrado");
					respuesta.setCodigoPeticion(codigoPeticion);
					respuesta.setEstado(-1);
					respuesta.setObservacion("No se ha encontrado el analisis");
					
				}
					
		     }catch(Exception e)
			{
			
			}
			return respuesta; 		
		}
		
	
}
